Why doesn't Dijkstra's algorithm work for negative weight